«Same-site» и «same-origin» — часто цитируемые, но часто неправильно понимаемые термины. Например, они используются в контексте переходов страниц, запросов fetch()
, файлов cookie, открывающихся всплывающих окон, встроенных ресурсов и iframe. На этой странице объясняется, что это такое и чем они отличаются друг от друга.
Источник

«Origin» — это комбинация схемы (также известной как протокол , например HTTP или HTTPS ), имени хоста и порта (если указан). Например, если задан URL https://www.example.com:443/foo
, «origin» — https://www.example.com:443
.
«Одно и то же происхождение» и «перекрестное происхождение»
Веб-сайты, имеющие одинаковую комбинацию схемы, имени хоста и порта, считаются «одного происхождения». Все остальное считается «кросс-источником».
Происхождение А | Происхождение B | «Одно и то же происхождение» или «перекрестное происхождение»? |
---|---|---|
https://www.example.com:443 | https://www.evil.com :443 | Кросс-происхождение: разные домены |
https://example.com :443 | Кросс-происхождение: разные поддомены | |
https:// логин .example.com:443 | Кросс-происхождение: разные поддомены | |
http ://www.example.com:443 | Кросс-происхождение: разные схемы | |
https://www.example.com: 80 | Кросс-происхождение: разные порты | |
https://www.example.com:443 | Одинаковое происхождение: точное совпадение | |
https://www.example.com | Тот же источник: неявный номер порта (443) совпадает |
Сайт

Домены верхнего уровня (TLD), такие как .com
и .org
, перечислены в базе данных корневой зоны . В предыдущем
например, "site" — это комбинация схемы , TLD и части домена непосредственно перед ней (мы называем ее TLD+1). Например, если задан URL https://www.example.com:443/foo
, "site" — это https://example.com
.
Список публичных суффиксов и eTLD
Для доменов с такими элементами, как .co.jp
или .github.io
, простое использование .jp
или .io
недостаточно для идентификации «сайта». Не существует алгоритмического способа определить уровень регистрируемых доменов для конкретного TLD. Чтобы помочь с этим, Public Suffix List определяет список публичных суффиксов, также называемых эффективными TLD (eTLD) . Список eTLD поддерживается на publicsuffix.org/list .
Чтобы определить часть «сайт» домена, включающего eTLD, примените ту же практику, что и в примере с .com
. Возьмем в качестве примера https://www.project.github.io:443/foo
, схема — https
, eTLD — .github.io
, а eTLD+1 — project.github.io
, поэтому https://project.github.io
считается «сайтом» для этого URL.

«на одном сайте» и «на разных сайтах»
Веб-сайты, имеющие одинаковую схему и одинаковый eTLD+1, считаются «односайтовыми». Веб-сайты, имеющие разную схему или разный eTLD+1, считаются «межсайтовыми».
Происхождение А | Происхождение B | «Односайтовый» или «межсайтовый»? |
---|---|---|
https://www.example.com:443 | https://www.evil.com :443 | Межсайтовый: разные домены |
https:// логин .example.com:443 | Один и тот же сайт: разные поддомены не имеют значения | |
http ://www.example.com:443 | Кросс-сайт: разные схемы | |
https://www.example.com: 80 | Один и тот же сайт: разные порты не имеют значения | |
https://www.example.com:443 | Тот же сайт: точное совпадение | |
https://www.example.com | На одном сайте: порты не имеют значения |
«Бессхемный тот же сайт»

Определение "same-site" изменено, чтобы включить схему URL как часть сайта, чтобы предотвратить использование HTTP в качестве слабого канала . Старая концепция "same-site" без сравнения схем теперь называется "schemeless same-site". Например, http://www.example.com
и https://www.example.com
считаются schemeless same-site, но не same-site, потому что имеет значение только часть eTLD+1, а схема не учитывается.
Происхождение А | Происхождение B | «Безсхемный односайтовый» или «межсайтовый»? |
---|---|---|
https://www.example.com:443 | https://www.evil.com :443 | Межсайтовый: разные домены |
https:// логин .example.com:443 | Schemeless same-site: разные поддомены не имеют значения | |
http ://www.example.com:443 | Бессхемный тот же сайт: разные схемы не имеют значения | |
https://www.example.com: 80 | Бессхемный тот же сайт: разные порты не имеют значения | |
https://www.example.com:443 | Схема без одного и того же сайта: точное совпадение | |
https://www.example.com | Бессхемный тот же сайт: порты не имеют значения |
Как проверить, является ли запрос «того же сайта», «того же источника» или «межсайтовым»
Все современные браузеры отправляют запросы с HTTP-заголовком Sec-Fetch-Site
. Заголовок имеет одно из следующих значений:
-
cross-site
-
same-site
(относится к схематичному тому же сайту) -
same-origin
-
none
Вы можете проверить значение Sec-Fetch-Site
, чтобы определить, является ли запрос запросом того же сайта, того же источника или межсайтовым.
Вы можете обоснованно доверять значению заголовка Sec-Fetch-Site
, потому что:
- Заголовки HTTP, начинающиеся с
Sec-
не могут быть изменены с помощью JavaScript. - Браузер всегда устанавливает эти заголовки.